package com.enjoyor.soa.traffic.api.ubms.service.dubbo;

import com.enjoyor.soa.traffic.api.ubms.dto.ParkInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 维护停车场信息的Dubbo服务
 * @author yuankun
 * @version V1.0
 */
public interface DubboParkInfoService {
	/**
	 * 返回所有停车场信息
	 * @return ResultPojo 所有停车场信息
	 */
	public ResultPojo getParkInfo();
	
	/**
	 * 分页返回所有停车场信息
	 * @param page 分页对象
	 * @return ResultPojo 包含所有停车场信息的分页对象
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageParkInfo(Page page);
	/**
	 * 返回所有停车场信息
	 * @param orderSeq 
	 * @param regionId 
	 * @param roadTypeCode 
	 * @param blockId 
	 * @param deptId 
	 * @param parkLevelCode 
	 * @param parkTypeCode 
	 * @param parkName 
	 * @param parkId 
	 * @return ResultPojo 所有停车场信息
	 */
	public ResultPojo getParkInfo(String parkId, String parkName, String parkTypeCode, String parkLevelCode, String deptId, String blockId, String roadTypeCode, String regionId, String orderSeq);
	
	/**
	 * 分页返回所有停车场信息
	 * @param regionId 
	 * @param roadTypeCode 
	 * @param orderSeq 
	 * @param blockId 
	 * @param deptId 
	 * @param parkLevelCode 
	 * @param parkTypeCode 
	 * @param parkName 
	 * @param parkId 
	 * @param page 分页对象
	 * @return ResultPojo 包含所有停车场信息的分页对象
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageParkInfo(String parkId, String parkName, String parkTypeCode, String parkLevelCode, String deptId, String blockId, String orderSeq, String roadTypeCode, String regionId, Page page);
	
	/**
	 * 
	* 根据不同参数获取停车场信息分页对象
	* @param parkId 停车场编号
	* @param parkName 停车场名称
	* @param parkType 停车场类型
	* @param parkLevel 停车场等级
	* @param manageDept 管理部门
	* @param roadId 所属道路
	* @param page 分页对象
	* @return ResultPojo 满足条件的停车场信息的分页对象
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageParkInfo(String parkId,String parkName,String parkType,String parkLevel,String manageDept,String roadId,Page page);
	
	
	/**
	 * 
	* 根据不同参数获取停车场信息分页对象
	* @param parkId 停车场编号
	* @param parkName 停车场名称
	* @param parkTypeCode 停车场类型
	* @param parkLevelCode 停车场等级
	* @param deptId 所属部门
	* @param blockId 所属路段
	* @param roadTypeCode 道路类型
	* @param orderSeq 排序方式
	* @return ResultPojo 满足条件的停车场信息的分页对象
	 */
	public ResultPojo getParkInfoByAll(String parkId, String parkName, String parkTypeCode, String parkLevelCode, String deptId, String blockId, String roadTypeCode,String orderSeq);
	
	
	/**
	 * 返回指定编码的停车场信息
	 * @param parkId 停车场编码
	 * @return ResultPojo 停车场信息
	 */
	public ResultPojo getParkInfoById(String parkId);
	
	/**
	 * 按名称匹配并返回停车场信息
	 * @param parkName 停车场名称
	 * @return ResultPojo 停车场信息
	 */
	public ResultPojo getParkInfoByName(String parkName);
	
	/**
	 * 按部门编码查找并返回停车场信息
	 * @param deptId 部门编码
	 * @return ResultPojo 停车场信息
	 */
	public ResultPojo getParkInfoByDeptId(String deptId);
	
	/**
	 * 按路段编码查找并返回停车场信息
	 * @param blockId 路段编码
	 * @return ResultPojo 停车场信息
	 */
	public ResultPojo getParkInfoByBlockId(String blockId);
	
	/**
	 * 按类型查找并返回停车场信息
	 * @param parkTypeCode 停车场类型
	 * @return ResultPojo 停车场信息
	 */
	public ResultPojo getParkInfoByParkType(String parkTypeCode);
	
	/**
	 * 按等级查找并返回停车场信息
	 * @param parkLevelCode 停车场等级
	 * @return ResultPojo 停车场信息
	 */
	public ResultPojo getParkInfoByParkLevel(String parkLevelCode);
	
	/**
	 * 返回与前缀相匹配的停车场编码最大值，用于手工生成新的停车场编码
	 * @param prefixParkId 停车场编码前缀
	 * @return String 与前缀相匹配的停车场编码最大值
	 */
	public String getMaxParkId(String prefixParkId);
	
	/**
	 * 添加一条停车场信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param parkInfoDto 停车场信息
	 * @return ResultPojo 添加结果
	 */
	public ResultPojo addParkInfo(String token, ParkInfoDto parkInfoDto);
	
	/**
	 * 修改一条停车场信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param parkInfoDto 停车场信息
	 * @return ResultPojo 修改结果
	 */
	public ResultPojo editParkInfo(String token, ParkInfoDto parkInfoDto);
	
	/**
	 * 删除指定编码的停车场信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param parkId 停车场编码
	 * @return ResultPojo 删除结果
	 */
	public ResultPojo removeParkInfo(String token, String parkId);

	public ResultPojo setParkStatus(String token, String parkId, String deviceStatus);
}
